﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XTYAPI.PLC
{
    /// <summary>
    /// 关断延时
    /// WangdDong QQ851879790
    /// 可以使用“关断延时”指令将 Q 参数的复位延时 PT 指定的一段时间。
    /// 当 IN 参数的逻辑运算结果 (RLO) 从“1”变为“0”（信号下降沿）时，将置位参数 Q。
    /// 当参数 IN 的信号状态更改回“1”时，预设的时间 PT 开始计时。只要时间 PT 正在计时，参数 Q 就保持置位状态。
    /// 超过时间 PT 时，将复位参数 Q。如果参数 IN 的信号状态在超出时间值 PT 之前变为“1”，则将复位定时器。
    /// 参数 Q 的信号状态保持置位为“1”。
    /// 可通过 ET 参数查询当前的时间值。该定时器值从 T#0s 开始，在达到持续时间 PT 后结束。
    /// 在持续时间 PT 过后，在参数 IN 重新变为“1”之前，参数 ET 会一直保持为当前值。
    /// 如果参数 IN 在时间 PT 用完之前变为“1”，则参数 ET 将复位为值 T#0s。
    /// </summary>
    public class TOF:TON
    {
        F_TRIG f_TRIG = new F_TRIG();
        F_TRIG f_TRIG1 = new F_TRIG();
        bool q;
        public new bool IN
        {
            set
            {
                f_TRIG.CLK = value;
                if (f_TRIG.Q)
                {
                    base.IN = true;
                }
            }
        }
        public new uint PT { get { return base.PT; } set { base.PT = value; } }
        public  new uint ET { get {  return base.PT- base.ET; } }
        public new bool Q { get { q = base.IN && !base.Q; f_TRIG1.CLK = q; if (f_TRIG1.Q) base.IN = false; return q; } }

    }
}
